<?php
    // 命名空间就是包，用于存放项目中的类，函数，常量
    // namespace AA;
    // function add(){
    //     echo "加法";
    // }
    // namespace b;
    // function add(){
    //     echo "两个加数相加";
    // }
    // namespace bb;
    // function add(){
    //     echo "三个数相加";
    // }
    // add(); //三个数相加
    // \AA\add(); //加法
    // \b\add();   //两个加数相加
    // // \ 表示公共空间

    // 多级命名空间 命名空间的名字可以是多级的（子级命名空间）
    // namespace AA\bb\cc;
    // function say(){
    //     echo "中文";
    // }
    // class Student{
    //     public $name;
    // }
    // namespace AA\bb\dd;
    // function say(){
    //     echo "法语";
    // }
    // // namespace BB\DD;
    // namespace AA\bb;
    // function say(){
    //     echo "英文";
    // }
    // class Student{
    //     public $age;
    // }
    // \AA\bb\cc\say();
    // $stu=new \AA\bb\cc\Student(); //$age
    // // $stu=new Student(); 
    // var_dump($stu);

    //访问空间的三种元素
    // 1，完全限定名称访问  \AA\bb\cc\say()
    // 2，非限定名称访问  say()
    // 3，限定名称访问  前面空间有相同部分，把不同部分拉过来
    //    AA\bb\cc 在上面  AA\bb下面  cc\say();
    // cc\say();
    // dd\say();

    //引入命名空间
    // 完全限定名称访问元素路径太长，可以将其他空间引入当前空间来
    // namespace AA\bb\cc;
    // function say(){
    //     echo "中文";
    // }
    // class Student{
    //     public $name;
    // }
    // namespace AA\bb\dd;
    // function say(){
    //     echo "法语";
    // }
    // namespace AA\bb;
    // function say(){
    //     echo "英文";
    // }
    // class Student{
    //     public $age;
    // }
    // use AA\bb\dd;
    // dd\say();  //法语  use引入命名空间
    // // say();  //英文
    // use AA\bb\cc;
    // cc\say();
    // $stu=new cc\Student();
    // var_dump($stu);

    //引入空间元素
    namespace AA\bb\cc;
    function say(){
        echo "中文";
    }
    class Student{
        public $name;
    }
    namespace AA\bb\dd;
    function say(){
        echo "法语";
    }
    class Student{
        public $age;
    }
    class Car{
        public $name;
    }
    const PI=3.14;
    namespace AA\bb;
    function say(){
        echo "英文";
    }
    // class Student{
    //     public $sex;
    // }
    // class Car{
    //     public $color;
    // }
    
    // 引入类 直接用use
    use \AA\bb\dd\Student as stu;
    // $stu=new Student();
    $stu=new stu();
    var_dump($stu);
    // $car=new Car();
    // 引入函数：use function 
    use function AA\bb\dd\say as speek;;
    speek();
    // use function AA\bb\cc\say;
    // say();
    //引入常量 use const
    // use const AA\bb\dd\PI;
    // echo PI;
?>